/*
 * @Description: 测试类
 * @Author: rendc
 * @Date: 2025-08-04 11:32:56
 * @LastEditors: rendc
 * @LastEditTime: 2025-08-04 14:58:12
 */

public class Test02 {

  public static void main(String[] args) {
    // 多态 向上转型 子类对象指向父类引用
    Base base = new Derived();
    // 实现向下转型 解决向上转型中访问不到的子类特有的属性和方法
    // 如果被转换的引用类型变量 base 本身是 Derived 类
    // 和转换目标的 Fork 类 不是同一种类型
    // 就会抛出 运行时 异常
    // java.lang.ClassCastException
    // try {
    // Fork fork = (Fork) base;
    // fork.out(); // n=?
    // } catch (Exception e) {
    // // TODO: handle exception
    // }
    boolean flag1 = base instanceof Derived;
    // boolean flag2 = base instanceof Fork;
    System.out.println(flag1);
    // System.out.println(flag2);
    if (flag1) {
      Derived d = (Derived) base;
      d.disp(); // n=?
    } else {
      Fork fork = (Fork) base;
      fork.out(); // n=?
    }

    // Boolean
    // Integer
  }
}